Integrated circuits are formed on wafers and then sawed into dies. The dies are packaged as packages before they are used. To ensure that the reliability and the performance of the integrated circuits meet specifications, the packaged dies are tested. The testing of integrated circuits further includes the testing of individual dies, which may be system-on-chip (SoC) dies. In the testing of each die or package, there may be multiple test items that need to be executed.
Conventionally, the testing were performed using a fixed sequence of the test items, and the testing of wafer probing on all dies or packages that have the same structure is performed according to the same pre-defined fixed sequence. In the packages with stacked dies, the testing was often performed die-by-die, that is, all test items for one die are executed, and then the test items for another die are executed. This method, however, has a low efficiency since some of the test items are prone to failure. Accordingly, if such test items are executed behind those test items not prone to failure, the time of finding the failed test items is delayed, and the testing of the test items that are not prone to failure are actually wasted. To overcome this drawback, various methods were proposed.
In one of the methods, the test results of wafer probing on dies or packages are analyzed after a plurality of dies or packages are tested, and those test items don't seem to suffer from failure were skipped. This method, although resulted in lower test cost, may incur a high penalty when a die does fail on the skipped test item. In this case, since the test item is skipped, the failure die wrongfully passes the test.
In another method, if a die or a package fails on a test item, this most recently failed test item is adjusted as the very first (top) test item of the test sequence, and the testing of the next die starts from the most recently failed test item. It is observed, however, that some of the most recently failed test items may happen to be the test item that seldom suffers from failure. For example, a die may fail on a test item that almost always passes. Accordingly, the next die, and possibly many dies after the next die, will be tested starting from this test item. It may take many failed dies before this test item sinks to the bottom of the test sequence. Therefore, the test sequence of this method is also not optimized.